<?php

class Model
{
	
	/*
		Модель обычно включает методы выборки данных, это могут быть:
			> методы нативных библиотек pgsql или mysql;
			> методы библиотек, реализующих абстракицю данных. Например, методы библиотеки PEAR MDB2;
			> методы ORM;
			> методы для работы с NoSQL;
			> и др.
	*/
	public function connect_to_db()
	{
		$link = mysqli_connect('heapstore.ru','kanye','bigrat90','heapstore_db');

		/* check connection */
		if (mysqli_connect_errno()) {
			printf("Connect failed: %s\n", mysqli_connect_error());
			exit();
		}
		return $link;
	}

	//get row from mysql: query + placeholders
	public function getRow($query, $param)
	{
		$link=$this->connect_to_db();
		$stmt = mysqli_prepare($link, $query);

		/* 	's' param means string variable
			'i' - integer
			'd' - double
		*/
		switch(gettype($param))
		{
			case "integer": $vtype='i'; break;
			case "double": $vtype='d'; break;
			case "string": $vtype='s'; break;
		}
		mysqli_stmt_bind_param($stmt, $vtype, $param);

		mysqli_stmt_execute($stmt);
		$result = mysqli_stmt_get_result($stmt);
		$data = mysqli_fetch_array($result, MYSQLI_ASSOC);

		mysqli_stmt_close($stmt);
		mysqli_close($link);
		return $data;
	}

	//get array of rows from mysql: query + placeholders
	public function getAll($query, $param)
	{
		$link=$this->connect_to_db();
		$stmt = mysqli_prepare($link, $query);

		/* 	's' param means string variable
			'i' - integer
			'd' - double
		*/
		switch(gettype($param))
		{
			case "integer": $vtype='i'; break;
			case "double": $vtype='d'; break;
			case "string": $vtype='s'; break;
		}
		mysqli_stmt_bind_param($stmt, $vtype, $param);

		mysqli_stmt_execute($stmt);
		$result = mysqli_stmt_get_result($stmt);
		while( $row = mysqli_fetch_array($result, MYSQLI_ASSOC))
			$data[]= $row;

		mysqli_stmt_close($stmt);
		mysqli_close($link);
		return $data;
	}

	// метод выборки данных
	public function get_data()
	{
		// todo
	}
}